package util

import (
	"encoding/base64"
	"golang.org/x/crypto/scrypt"
	"log"
)

// ScryptPassword 密码加密。专业方法。https://pkg.go.dev/golang.org/x/crypto/scrypt

func ScryptPassword(password string) string {
	// func Key(password, salt []byte, N, r, p, keyLen int) ([]byte, error) // salt =程序员定义盐；N=cpu开销，2~2^29；keyLen=最后哈希长度
	const keyLen = 32                                                            // 最后的哈希的长度
	salt := []byte{0xc8, 0x28, 0xf2, 0x58, 0xa7, 0x6a, 0xad, 0x7b}               // 盐
	HashPassword, err := scrypt.Key([]byte(password), salt, 1<<11, 8, 1, keyLen) // 得到专业级加密的密码
	if err != nil {
		log.Fatal(err)
	}
	return base64.StdEncoding.EncodeToString(HashPassword) // 返回base64字符串
}
